package unipampa.extensions.games.pampaPife;

import com.smartfoxserver.v2.entities.User;
import com.smartfoxserver.v2.entities.data.ISFSObject;
import com.smartfoxserver.v2.entities.data.SFSObject;
import com.smartfoxserver.v2.extensions.BaseClientRequestHandler;

public class TratarBater extends BaseClientRequestHandler{
	int i;
	public void handleClientRequest(User usuario, ISFSObject params){
		PampaPifeExtension gameExt = (PampaPifeExtension) getParentExtension();
		String cartaStr[] = {"c1","c2","c3","c4","c5","c6","c7","c8","c9"};
		String cartaStrCmp[] = {"v","n","b"};
		Carta cartas[] = new Carta[9];
		//int njogos = 0;
		int valor, naipe, baralho;
		
		for (int k=0;k<9;k++){
			valor = params.getInt(cartaStr[k]+cartaStrCmp[0]);
			naipe = params.getInt(cartaStr[k]+cartaStrCmp[1]);
			baralho = params.getInt(cartaStr[k]+cartaStrCmp[2]);
			trace("->"+valor+"-"+naipe+"-"+baralho);
			cartas[k] = new Carta(valor, naipe, baralho);
		}
		
		for(i=0;i<3;i++){
            switch(testaNaipes(cartas[3*i].getNaipe(), cartas[(3*i)+1].getNaipe(), cartas[(3*i)+2].getNaipe())){
                case 0:
                    mensagemErro(usuario);
                    break;
                case 1:
                    testaSequencia(cartas[3*i].getValor(), cartas[(3*i)+1].getValor(), cartas[(3*i)+2].getValor(),usuario);
                    break;
                case 2:
                    testaTrinca(cartas[3*i].getValor(), cartas[(3*i)+1].getValor(), cartas[(3*i)+2].getValor(),usuario);
                    break;
            }
        }
		if ( i == 3 ){
			SFSObject respObj = new SFSObject();
			respObj.putInt("ganhador", usuario.getPlayerId());
			for (int i=0;i<9;i++){
				respObj.putInt(cartaStr[i]+cartaStrCmp[0], cartas[i].getValor());
				respObj.putInt(cartaStr[i]+cartaStrCmp[1], cartas[i].getNaipe());
				respObj.putInt(cartaStr[i]+cartaStrCmp[2], cartas[i].getBaralho());
			}
			send("bateu", respObj, gameExt.getParentRoom().getUserList());
		}
	}
    public int testaNaipes(int a, int b, int c){
        if(a==b){
                if(b==c){
                    return 1;
                }
        }else{
            if(a!=c && b!=c){
                return 2;
            }
        }
        return 0;
    }

    public void testaTrinca(int a, int b, int c, User usuario){

        if(a==b&&b==c){
                //trinca;
        }else{
        	mensagemErro(usuario);
        }
    }

    public void testaSequencia(int a, int b, int c, User usuario){

        if(a==b-1){ // testa sequencia crescente
            if(b==c-1){}                        //sequencia
            else{
                if(b == 12 && c == 0){}         //sequencia
                else{
                    mensagemErro(usuario);
                }
           }
        }
        else{ // testa sequencia decrescente
            if(c == b - 1){
                if(b==a-1){}                    //sequencia
                else{
                    if(b == 12 && a == 0){}     //sequencia
                    else{
                        mensagemErro(usuario);
                    }
                }
            }
            else{
                mensagemErro(usuario);
            }
        }
    }

    public void mensagemErro(User usuario){
    	i=4;
        send("naoBateu", new SFSObject(), usuario);
    }

}
